import { createElement, createTextVnode } from "./vnode";

function renderMixin(Vue) { // 渲染视图
  // 在实例上扩展三个方法
  Vue.prototype._c = function () {
    return createElement(...arguments);
  }

  Vue.prototype._s = function (value) {
    // console.log(value)
    if (value === null) return;

    return typeof value === 'object' ? JSON.stringify(value) : value;
  }

  Vue.prototype._v = function (text) {
    return createTextVnode(text);
  }

  Vue.prototype._render = function() { // render函数转虚拟节点
    const vm = this,
          render = vm.$options.render,
          vnode = render.call(vm); // 使用call执行原型上的 _c _v _s 方法

    // console.log(render);
    // console.log(vnode);
    return vnode;
  }
}

export {
  renderMixin
}